package com.ch.engine.daily.abstractTest;

/**
 * 支付接口 - 定义支付行为规范
 * 接口特点：
 * 1. 只能定义抽象方法和常量
 * 2. 支持多重继承
 * 3. 实现类必须实现所有抽象方法
 * 4. 从Java 8开始支持默认方法和静态方法
 *
 * @author wangchunhui
 * @date 2025/1/25
 */
public interface PaymentInterface {
    
    // 接口中的变量默认是 public static final
    double MIN_AMOUNT = 0.01;
    String CURRENCY = "CNY";
    
    // 抽象方法 - 必须被实现
    boolean processPayment(double amount);
    
    // Java 8+ 默认方法 - 可以有实现
    default void validateAmount(double amount) {
        if (amount < MIN_AMOUNT) {
            throw new IllegalArgumentException("支付金额不能小于 " + MIN_AMOUNT);
        }
    }
    
    // Java 8+ 静态方法
    static String formatAmount(double amount) {
        return String.format("%.2f %s", amount, CURRENCY);
    }
}